/* 
 * File:   ficheros.h
 * Author: jonk
 *
 * Created on 15 de enero de 2012, 20:28
 */

#ifndef FICHEROS_H
#define	FICHEROS_H

void loadConfig(parametros *param, particula *part)
{
    ifstream MiArchivo ("system_ini.dat",ios::in);
    char line[150];
    double dummy2;
    double rr;
    if(MiArchivo.fail())
    {
        cout<<"No se pudo encontrar el archivo de reinicio "<<endl;
        exit(1);
    }
    if (MiArchivo.is_open())
    {
        MiArchivo>>param->npart>>param->phi>>param->rcut>>param->u0>>param->lbox[0]>>param->lbox[1]>>param->lbox[2];

        ///Importamos las posiciones y velocidades
        for(int i=0;i<param->npart;i++) 
        {
            for(int j=0;j<3;j++)
            {
                MiArchivo>>rr;
                part[i].pos[j]=rr;
        }
        for(int j=0;j<3;j++)
        {
            MiArchivo>>rr;
            part[i].vel[j]=rr;
        }
        BC(&part[i],*param);
        #ifdef POLYDISPERSE
            MiArchivo>>rr;
            part[i]->diameter=rr;
        #else
            part[i].diameter=1.0;
        #endif

        part[i].mass=pow(part[i].diameter,3.0);
        }
        MiArchivo.close();
   }
    param->vol=param->lbox[0]*param->lbox[1]*param->lbox[2];
}

void printConfigBackup(particula *part, parametros param)
{
    char name[50];
    sprintf(name, "%s","system_bk.dat");
    ofstream MiArchivo (name,ios::out|ios::app);

    if (MiArchivo.is_open()) {
            MiArchivo.setf(ios::fixed);
            MiArchivo<<param.npart<<setw(10)<<param.phi<<setw(10)<<param.rcut<<setw(10)<<param.u0
                    <<setw(10)<<param.lbox[0]<<setw(10)<<param.lbox[1]<<setw(10)<<param.lbox[2]<<endl;
    }
    for(int i=0;i<param.npart;i++) {
        MiArchivo<<scientific<<part[i].pos[0]<<setw(20)<<part[i].pos[1]<<setw(20)<<part[i].pos[2]
                <<setw(20)<<part[i].vel[0]<<setw(20)<<part[i].vel[1]<<setw(20)<<part[i].vel[2];
        #ifdef POLYDISPERSE
        MiArchivo<<setw(20)<<part[i].radio;
        #endif
    MiArchivo<<endl;
    }
}
#endif	/* FICHEROS_H */

